package cn.melonlib;

import cn.melonlib.cores.commons.comp.utils.ApplicationContextUtils;
import cn.melonlib.cores.commons.comp.utils.YamlSourceFactory;
import cn.melonlib.cores.jpa.comp.Dao;
import cn.melonlib.cores.web.comp.interceptor.WebInfoInterceptor;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScans;
import org.springframework.context.annotation.ImportResource;
import org.springframework.context.annotation.PropertySource;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import javax.annotation.Resource;
import java.io.File;

@SpringBootApplication
@PropertySource(value = {"file:config.yml","classpath:db.yml","classpath:fs.yml","classpath:register.yml"}, factory = YamlSourceFactory.class)
@ImportResource({"classpath:spring-context-datasource.xml"})
@EnableCaching
@EnableTransactionManagement(order = 5)
public class ReportsMainApplication implements WebMvcConfigurer {
    public static void main(String[] args) {
        ApplicationContextUtils.setApplicationContext(SpringApplication.run(ReportsMainApplication.class, args)) ;
        String help= """
                *********************************************************************************************************************************************
                使用方法：
                1、先安装jdk17或者更高版本
                2、配置config.yml文件，配置好你的数据库连接，用户名密码
                3、使用java -jar schemas_export.jar命令启动应用
                4、打开浏览器访问应用
                本地访问地址：
                http://localhost:8080/export/report/export/schemas?storeType=<数据库类型>&schemaName=<数据库名称>&title=<报表标题>&reportType=<报表类型>
                参数说明：
                storeType：数据库：mysql、postgresql、oracle
                schemaName：mysql数据库是数据库名，oracle是用户名，postgresql是 <数据库名>:<schema名称>
                title:报表标题与下载的文件名
                reportType:报表类型，pdf、docx、html
                说明：本应用由spring-boot+hibernate+spring-mvc框架开发，具备spring-boot的任何配置属性。
                *********************************************************************************************************************************************\
                """;
        System.out.println(help);
    }


    private Dao dao;
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedHeaders("*")
                .allowedOriginPatterns("*")
                .allowCredentials(true)
                .allowedMethods("GET", "POST", "DELETE", "PUT", "PATCH", "OPTION");
    }
}
